জাভাস্ক্রিপ্টে প্রোমিজ (Promise) একটি অবজেক্ট যা ভবিষ্যতে সম্পন্ন হতে পারে এমন একটি কাজের ফলাফল প্রতিনিধিত্ব করে। এটি বিশেষভাবে অ্যাসিঙ্ক্রোনাস অপারেশন হ্যান্ডল করার জন্য ব্যবহৃত হয়, যেমন নেটওয়ার্ক রিকুয়েস্ট, ফাইল সিস্টেম অ্যাক্সেস, বা টাইমার। প্রোমিজে তিনটি গুরুত্বপূর্ণ স্টেট থাকে: Pending (অপেক্ষমাণ), Resolved (সম্পন্ন), এবং Rejected (অব্যাহত)।
১. Pending: প্রোমিজ এখনও সম্পন্ন হয়নি এবং রেজাল্ট পাওয়া যায়নি।
২. Resolved: প্রোমিজ সফলভাবে সম্পন্ন হয়েছে এবং রেজাল্ট পাওয়া গেছে।
৩. Rejected: প্রোমিজ সম্পন্ন হয়নি এবং ত্রুটি ঘটেছে।
প্রোমিজ তৈরি করতে new Promise()
কনস্ট্রাক্টর ব্যবহার করা হয়, যেখানে দুইটি আর্গুমেন্ট থাকে: resolve
এবং reject
। resolve
ব্যবহার করা হয় সফলতার ক্ষেত্রে এবং reject
ব্যবহার করা হয় ত্রুটির ক্ষেত্রে।
let promise = new Promise(function(resolve, reject) {
let success = true;
if(success) {
resolve("অপারেশন সফল");
} else {
reject("অপারেশন ব্যর্থ");
}
});
promise
.then(function(result) {
console.log(result); // আউটপুট: অপারেশন সফল
})
.catch(function(error) {
console.log(error); // আউটপুট: অপারেশন ব্যর্থ
});
.then()
.then()
মেথডটি প্রোমিজ সফলভাবে রেজলভ হওয়ার পর কল হয় এবং এটি একটি রিটার্ন ভ্যালু গ্রহণ করে।
let promise = new Promise(function(resolve, reject) {
resolve("ডেটা সফলভাবে ফেচ হয়েছে");
});
promise.then(function(result) {
console.log(result); // আউটপুট: ডেটা সফলভাবে ফেচ হয়েছে
});
.catch()
.catch()
মেথডটি প্রোমিজ রিজেক্ট হলে ত্রুটি হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়।
let promise = new Promise(function(resolve, reject) {
reject("কিছু একটা ভুল হয়েছে");
});
promise.catch(function(error) {
console.log(error); // আউটপুট: কিছু একটা ভুল হয়েছে
});
.finally()
.finally()
মেথডটি প্রোমিজ সফল বা ব্যর্থ যাই হোক না কেন, শেষ পর্যন্ত কল হয়।
let promise = new Promise(function(resolve, reject) {
resolve("অপারেশন সফল");
});
promise
.then(function(result) {
console.log(result); // আউটপুট: অপারেশন সফল
})
.finally(function() {
console.log("এই অংশ সব সময় এক্সিকিউট হবে");
});
প্রোমিজ চেইনিং হল একাধিক প্রোমিজকে একে একে যুক্ত করার পদ্ধতি, যাতে প্রতিটি স্টেপের রেজাল্ট পরবর্তী স্টেপে পাস হয়।
let promise = new Promise(function(resolve, reject) {
resolve("প্রথম ডেটা");
});
promise
.then(function(result) {
console.log(result); // আউটপুট: প্রথম ডেটা
return "দ্বিতীয় ডেটা";
})
.then(function(result) {
console.log(result); // আউটপুট: দ্বিতীয় ডেটা
});
এখানে, .then()
চেইনিংয়ের মাধ্যমে একের পর এক প্রোমিজ এক্সিকিউট হয়।
Promise.all()
Promise.all()
একাধিক প্রোমিজকে একসাথে এক্সিকিউট করতে ব্যবহৃত হয়। এটি সমস্ত প্রোমিজ সফল হলে রেজল্ট দেয় এবং কোনো একটি প্রোমিজ ব্যর্থ হলে পুরো প্রক্রিয়া ব্যর্থ হয়ে যাবে।
let promise1 = new Promise(function(resolve) {
setTimeout(resolve, 1000, "ডেটা 1");
});
let promise2 = new Promise(function(resolve) {
setTimeout(resolve, 2000, "ডেটা 2");
});
Promise.all([promise1, promise2])
.then(function(values) {
console.log(values); // আউটপুট: [ 'ডেটা 1', 'ডেটা 2' ]
});
Promise.race()
Promise.race()
একটি পদ্ধতি যা প্রথমে পূর্ণাঙ্গ বা ব্যর্থ যেকোনো প্রোমিজের ফলাফল প্রদান করে।
let promise1 = new Promise(function(resolve) {
setTimeout(resolve, 1000, "ডেটা 1");
});
let promise2 = new Promise(function(resolve) {
setTimeout(resolve, 500, "ডেটা 2");
});
Promise.race([promise1, promise2])
.then(function(result) {
console.log(result); // আউটপুট: ডেটা 2
});
এখানে promise2
দ্রুত সম্পন্ন হওয়ার কারণে তা প্রথম আউটপুট হয়।
জাভাস্ক্রিপ্ট প্রোমিজ একটি শক্তিশালী উপায় অ্যাসিঙ্ক্রোনাস কাজের ফলাফল পরিচালনা করার জন্য। এটি resolve
, reject
এবং .then()
, .catch()
, .finally()
মেথডস ব্যবহার করে কোডকে আরও সহজ এবং পাঠযোগ্য করে তোলে। Promise.all()
এবং Promise.race()
এর মতো ফিচারগুলি একাধিক প্রোমিজের সাথে কাজ করতে সাহায্য করে। প্রোমিজ অ্যাসিঙ্ক্রোনাস কাজের মধ্যে সুশৃঙ্খলতা আনতে এবং কোডের কার্যকারিতা উন্নত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
common.read_more